package cn.fl.project.service;

import java.util.List;

import cmm.mid.core.framework.page.DataResultVO;
import cmm.mid.core.framework.page.KeyValueVO;
import cn.cmm.base.framework.exception.BaseException;
import cn.fl.project.vo.PrjAuditFlowVO;
import cn.fl.project.vo.PrjCstBscInfoVO;
import cn.fl.project.vo.ProjectFlowSHVO;
import fl.flow.facade.flow.dto.FlowStartParamsDTO;

/**
 * 项目评审流程SERVICE
 * @author yaoxiurong
 *
 */
public interface IPrjAuditFlowService {
	
	/**
	 * 查询项目相关流程历史
	 * @param prjId
	 * @return
	 * @throws BaseException
	 */
	public List<ProjectFlowSHVO> searchProjectFlowList(Long prjId)throws BaseException;
	
	/**
	 * 发起流程
	 * @param flowStartParamsDTO
	 * @return
	 * @throws BaseException
	 */
	public DataResultVO addFlowStart(DataResultVO result, FlowStartParamsDTO flowStartParamsDTO)throws BaseException;

	/**
	 * 发起预审
	 * @param flowStartParamsDTO
	 * @return
	 * @throws BaseException
	 */
	public DataResultVO addPreAudFlowStart(DataResultVO result, FlowStartParamsDTO flowStartParamsDTO)throws BaseException;

	/**
	 * 根据项目ID查询项目评审流程附加信息页面项目相关详情信息
	 * @param projectId
	 * @return
	 * @throws BaseException
	 */
	public PrjAuditFlowVO searchPrjAuditFlowByPrjId(Long projectId)throws BaseException;
	
	/**
	 * 根据项目ID查询担保人 
	 * @param projectId
	 * @return
	 * @throws BaseException
	 */
	public List<PrjCstBscInfoVO> searchGuarantorList(Long projectId)throws BaseException;
	/**
	 * 查询数据字典数据
	 * @return
	 * @throws BaseException
	 */
	public List<KeyValueVO> searchSysDicCdList(String codeGrpCd, String sysCd, String orgCd) throws BaseException;

	/**
	 * 是否弹出随州垫款流程弹框
	 * @param prjId
	 * @return
	 */
	DataResultVO checkExpatriateFlowAuth(String prjId, String capPayId) throws BaseException;
}
